mod version date 2-24-92 The BIG mod for WWIV 4.20 by Larry Mears 205-880-9896 2400 baud 24hrs Description: Will scan for the Blue Instant Graphics! terminal AND also the Atari ST Instant Graphics! terminal. It will check the terminals version and only allow BIG 1.02 and IG 2.17 the latest versions as of this mod. I am the author of the Instant Graphics! terminals. There is a a BIG 1.01a minor bug fix DL B101A.ZIP for the update only. Fixes the problem with the BIG pause command when the WELCOME file comes across. If you don't know what the BIG term is call 205-880-9896 and DL BIG102.ZIP now! AT class computer with VGA color required. BIG is a REAL graphics terminal. BIG has 6 years dev time behind it, it will make ANSI run to a corner and wimper! I spent 5 years on the Atari version before I ported IG to DOS! OK, nuff said let's get on with it. When the IG terminal is found it will be indentified and the GFILES with the following extenders will be used with FALLBACK to ANSI/ASCII if the files are non-existant. BIG term DEMO level unregistered: *.IG1 - fallback to .ANS, .MSG BIG term REGISTERED: *.IG2 - fallback to .IG1, .ANS, .MSG BIG term REGISTERED & ADLIB card: *.IG3 - fallback to .IG2, .IG1, .ANS, .MSG IG color terminal: *.IG4 - fallback to .ANS, .MSG (only) IG mono terminal: *.IG5 - fallback to .ANS, .MSG (only) When BIG term is found the SYSOP side will not see ANY menu or logon file display. ie User hits '?' the main menu will be ASCI sent without EXTRA WWIV decoding that DOES cause problems with ADLIB music data, and for that same reason no ADLIB music data can be placed into messages, BUT ADLIB data CAN be sent correctly with system files such as WELCOME.IG3 then the command to execute the data can be in messages or menus! Thumpin' thundering graphics!!! This mod will NOT effect the NORMAL operation of WWIV from the local console, it will work just like it always did, BUT things will be a little different when a BIG user is on-line and the SYSOP is assisting him from the console side. The user will see and hear things that the SYSOP will not. It would take a major REWRITE of WWIV to make it FULLY BIG altered on the SYSOP side. I'm not up to it and unless Wayne Bell wanted me to do it I wouldn't even try. This is the best I could come up with using the KISS principle! You might want to add a option from the main menu to allow the switching of menu type by the user instead of just the AUTO scan method. If so the variable 'big_menus' holds the key 0=normal operation 1-5 tells the IG terminal type just like the *.IGx extender. The files you will need to modify are: VARS.H LILO.C SR.C MSGBASE.C MSGBASE1.C BBSUTL.C (optional) BBS.C (optional) Come on let's go! ------------------------------------------------------------ In VARS.H find the line of code that looks like this: #ifdef _DEFINE_GLOBALS_ directly BELOW that line add this code: /* LGM{ */ unsigned char big_menus=0; /* }LGM */ You don't have to include the comments but that will help you locate the mod later to mod the mod or remove or copy it to another WWIV version or such. NEXT in VARS.H find the line of code that looks like: extern char *ctypes[]; now directly ABOVE this line ADD this code: /* LGM{ */ extern unsigned char big_menus; /* }LGM */ OK thats' all you do to VARS.H save it out to disk! ------------------------------------------------------------ NEXT load up LILO.C oh boy lot's to do here! Find the line of code near the top that looks like: #pragma hdrstop Directly BELOW this line add this chunk of code: /* LGM{ */ int check_ig() { long l,m; char ch[6]; int ig_v, ct=0; while (comhit()) get1c(); pr1("G#? 0:"); l=timer1()+36; if (modem_flag & flag_ec) l += 18; while ((timer1()200) { nl(); outstr("Please download the latest version of the IG terminal"); nl(); outstr("to use the ST Instant Graphics! menus on this BBS. G#b 0:"); nl(); } if(ig_v>=217) { /* check for MONO or COLOR IG terminal */ pr1("G#? 3:"); m=timer1()+36; ct=0; do { if(comhit()) { ch[ct]=get1c(); ct++; } } while(ct<2 && timer1()99) { nl(); outstr("Please download the NEW version of the BIG terminal"); nl(); outstr("to use the Blue Instant Graphics! menus on this BBS. I#b 2:"); nl(); } if(big_v>=102) { if(ch[4]==0 || ch[4]=='D') return(1); /* check for ADLIB if registered */ pr1("I#? 2:"); m=timer1()+36; ct=0; do { if(comhit()) { ch[ct]=get1c(); ct++; } } while(ct<2 && timer1()='1' && ch[1]==':' && ch[4]=='R') return(3); if(ch[4]=='R') return(2); } else return(0); } return(0); } /* }LGM */ OK now still in LILO.C go to the routine called getuser() we will make some changes here. Look for the line of code that matches this: if ((!net_only) && (incom)) { Directly BELOW that line add this block of code: /* LGM{ */ big_menus=check_big(); if(!big_menus) big_menus=check_ig(); switch(big_menus) { case 0: outstr("\n\rIG! Scan complete, extended on-line graphics and sound denied."); nl(); break; case 1: outstr("\n\rDetected BIG DEMO VERSION"); nl(); break; case 2: outstr("\n\rDetected BIG REGISTERED"); nl(); break; case 3: outstr("\n\rDetected BIG ADLIB REGISTERED"); nl(); break; case 4: outstr("\n\rDetected IG Color (med)"); nl(); break; case 5: outstr("\n\rDetected IG Mono (high)"); nl(); break; default: outstr("\n\r\7uh oh...."); nl(); break; } /* }LGM */ OK now in this same routine getuser() find the line that looks like: sprintf(s,"%sWELCOME.ANS",syscfg.gfilesdir); Directly BELOW that line add this code: /* LGM{ */ if(big_menus) { big_menus+=48; sprintf(s,"%sWELCOME.IG%c",syscfg.gfilesdir,big_menus); big_menus-=48; } /* }LGM */ OK now find the BLOCK of code that looks like: if (ans>0) printfile("welcome.ans"); else if (ans==0) printfile("welcome.msg"); } else printfile("welcome.msg"); } What you need to do is DELETE the above BLOCK and REPLACE it with this: /* LGM{ */ if(big_menus) printfile("welcome"); else if (ans>0) /* }LGM */ printfile("welcome.ans"); else if (ans==0) printfile("welcome.msg"); /* LGM{ */ } else if(!big_menus) printfile("welcome.msg"); else printfile("welcome"); /* }LGM */ } OK that is all that you need to do to LILO.C save it out to disk. --------------------------------------------------------------------- LOAD up SR.C we got some poking around to do here too! Now find the routine called ascii_send(); In this routine find the line that matches: outchr(b[i2++]); REPLACE that line with this code: /* LGM{ */ if(!big_menus) outchr(b[i2++]); else outcomch(b[i2++]); /* }LGM */ OK that's all to do to SR.C save it to disk! ----------------------------------------------------------------------- Now LOAD up MSGBASE.C and find the routine called printfile(char *fn) in this routine find the line that matches this: if (strchr(s,'.')==NULL) { Directly BELOW that line ADD this code block: /* LGM{ */ if(big_menus) { strcpy(s1,s); strcat(s1,".IGx"); s1[(strlen(s1)-1)]=big_menus+48; if(exist(s1)) { ascii_send(s1,0,0); return(0); } else { if(big_menus-1>0 && big_menus<4) { s1[(strlen(s1)-1)]=big_menus+47; if(exist(s1)) { ascii_send(s1,0,0); return(0); } else { if(big_menus-2>0) { s1[(strlen(s1)-1)]=big_menus+46; if(exist(s1)) { ascii_send(s1,0,0); return(0); } } } /*endif 2nd else*/ } /* endif big_menus-1>0 */ } /*endif 1st else */ } /*endif big_menus*/ /* }LGM */ OK dude that's all you do to MSGBASE.C, save it out to disk! --------------------------------------------------------------- NEXT LOAD up MSGBASE1.C find the routine called printmenu(int i) In that routine find the line that matches: int next; Directly BELOW that line add this block of code: /* LGM{ */ if(big_menus) { sprintf(s1,"MENU%u.IGx",i); s1[(strlen(s1)-1)]=big_menus+48; sprintf(s,"%s%s",syscfg.gfilesdir,s1); s1[(strlen(s1)-4)]='\0'; if (exist(s)) { printfile(s1); return; } else { if(big_menus-1>0 && big_menus<4 ) { s[(strlen(s)-1)]=big_menus+47; if (exist(s)) { printfile(s1); return; } else { if(big_menus-2>0) { s[(strlen(s)-1)]=big_menus+46; if (exist(s)) { printfile(s1); return; } } } /* endif 2nd else */ } /*endif big_menus-1>0 */ } /*endif 1st else */ } /*endif big_menus*/ /* }LGM */ OK that's it for MSGBASE1.C save it out to disk! -------------------------------------------------------------- Alright now LOAD up BBSUTL.C this part of the mod is optional. What it does is allow any caller with a BIG or IG term the maximum //UPLOAD message size limit of 20000 bytes, although they still are required to have a access level above 10 to //UPLOAD messages. This is to encourage users to upload their BIG Pictures to your message base. It's up to you add it if you like. In the routine called upload_post() find the line of code that matches: maxli=80; Directly BELOW that line add this code: /* LGM{ */ if(big_menus) maxli=80; /* }LGM */ That's all we do to BBSUTL.C save it to disk! ------------------------------------------------------------- OK here is another OPTIONAL mod I have on my bbs. My BBS is open access anyone can post that calls me, hopefully their BIG graphics to my BIG PICTURE base! To add this to your bbs LOAD BBS.C up. Look for the line that looks like this: if ((strcmp(s,"UPLOAD")==0) && (actsl>10)) CHANGE that line to this: if ((strcmp(s,"UPLOAD")==0) && (actsl>9)) Now save BBS.C to disk that's all to do there. ------------------------------------------------------------ LAST you type MAKE and cross your fingers, hope you made no typos! DISCLAIMER: I will not be held responsible for ANY damage this mod might cause. It works fine for me running WWIV 4.20 on DOS 3.3 and I really do hope you give your BBS the AWESOME POWER of BIG MENUS and BIG LOGON files!